package com.java17sourcecode.collections;

import org.openjdk.jol.vm.VM;

/**
 * @author liyanhao
 * @Date 2022-12-25 0:27
 */
public class HashCodeTest {
    public static void main(String[] args) {
        //hashCode算法的原理
        //hash表
        int[] hashtable = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
        //对象
        Object o = new Object();
        //获取对象o的物理地址 java无法无趣
        // 地址：也就是内存单元的实际地址，用于芯片级内存单元寻址。物理地址也由32位无符号整数表示
        //可以同jol获取对象到内存地址 默认十进制 某些模式下属于猜想地址不能直接使用 仅供参考
        // 在java17下运行有些问题结果类似于 29133728952
        //long l = VM.current().addressOf(o);//结果
        long l = 29133728952L;
        //获得hashcode jdk的hashcode表会更加复杂 并且hash函数也会更加复杂
        int hashcode = Integer.valueOf((int) (l%(hashtable.length)));
        System.out.println(hashcode);



    }
}
